package com.wwj.auction.login.controller;


import com.wwj.auction.common.result.R;
import com.wwj.auction.common.util.AddressUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author wwj
 * @since 2021-08-10
 */
@RestController
@RequestMapping("/login/userAddress")
@Slf4j
@Api("用户地址")
public class UserAddressController {

    @Autowired
    private RedisTemplate redisTemplate;

    @ApiOperation("地区信息")
    @GetMapping("/address")
    public R address() {
        // 从缓存中读取地区信息
        String json = (String) redisTemplate.opsForValue().get("rr:login:region");
        if (StringUtils.isEmpty(json)) {
            // 若缓存中没有数据，则生成地区信息数据
            String regionData = AddressUtils.createRegionData();
            // 地区信息数据生成比较耗时，且短时间内不会发生变化，故放入Redis缓存
            redisTemplate.opsForValue().set("rr:login:region", regionData);
            log.info("未命中缓存，生成地区信息");
        }
        // 若缓存中有数据，则直接返回缓存数据即可
        log.info("命中缓存，直接返回");
        return R.ok().data("data", json);
    }
}

